\documentclass[UTF8,a4paper,12pt]{report}   % list options between brackets
\usepackage{ctex}
\usepackage{geometry} %设置页边距包
\usepackage{setspace} %设置行间距包
\usepackage{indentfirst}
\usepackage{titlesec} %用于标题设置
\usepackage[Lenny]{fncychap} %修改chapter的风格
\usepackage{color}
\geometry{left=2.2cm,right=2cm,top=2.5cm,bottom=2.5cm}
\setmainfont{Times New Roman}
\setCJKmainfont{SimSun}

% --------------------------------------------------------------------
% 页眉页脚设置
\usepackage{fancyhdr}
\pagestyle{fancy}
\lhead{}
\chead{~\emph{DbUtils} 结合~\emph{DBCP} \\ 解决~\emph{JDBC} 编程中数据库连接泄漏问题}
\rhead{}
% --------------------------------------------------------------------

%自定义命令，简化斜体的输入
\newcommand{\x}[1]{~\emph{#1} }
%自定义命令，字体变红
\newcommand{\red}[1]{\color{red}{#1}}

\begin{document}
\title{\textbf{~\emph{DbUtils} 结合~\emph{DBCP} \\ 解决~\emph{JDBC} 编程中数据库连接泄漏问题}}
\author{李勤勇(BY1206126) \\ \x{liqinyong@nlsde.buaa.edu.cn}}
\date{~2013年 ~6月 }    % type date between braces
\maketitle

\renewcommand{\abstractname}{摘~~要}
\begin{abstract}
    \par \emph{Java~Database~Connectivity}~(\emph{JDBC}) 是~\emph{Java}语言中用来规范客户端如何访问数据库的应用程序接口，提供对数据库的相关~\emph{CURD}(\emph{CREATE},~\emph{UPDATE},~\emph{READ},~\emph{DELETE}) 操作。~\emph{JDBC}的出现简化了~\emph{Java} 操作关系型数据库的操作步骤。使用~\emph{JDBC} 的一般步骤是首先创建一个~\emph{java.sql.Connection} 对象，然后使用此数据连接对象对数据库进行~\emph{CURD} 操作，~\emph{CURD} 操作完成之后，还必须关闭~\emph{Connection}对象。在日常的使用的，相当部分的编程人员在完成相关数据库操作后并没有将~\emph{Connection} 对象关闭，这在简单的使用中并不会出现大的问题，程序一般会正常运行，但是如果在需要多次操作数据库的应用场景中，不及时关闭~\emph{Connection} 对象的后果是数据库维持着大量的无用的数据连接对象，从而拖慢数据库的性能直至数据库无法再接受数据连接。针对此问题，本文介绍了一种使用~\emph{DbUtils} 配合~\emph{DBCP} 解决数据连接泄漏问题的方法。本文首先对\x{JDBC}、\x{DbUtils}以及\x{DBCP}进行了简介，并对它们的典型应用做出了示例讲解；然后安排了实验：（1）单纯使用\x{JDBC}操作数据库；（2）使用\x{DbUtils}配合\x{java.sql.DataSource}接口操作数据；（3）使用\x{DbUtils}配合\x{DBCP}操作数据库。通过实验结果我们\red{这一段字体变红}
\end{abstract}
\chapter{\textbf{第{\thechapter}章~~相关技术介绍}}
\section{JDBC}
\subsection{简介}
\par Java数据库连接，(Java~Database~Connectivity，简称~JDBC )是~Java 语言中用来执行~SQL 语句的~Java ~API ，可以为多种关系数据库提供统一访问，它由一组使用~Java 语言的类和接口组成，规范了客户端程序如何来访问数据库的应用程序接口，提供了诸如查询和更新数据库中数据的方法，据此可以构建更高级的工具和接口规范。
\par 有了~JDBC，向各种关系数据发送~SQL 语句就是一件很容易的事。换言之，有了~JDBC~API，就不必为访问~Sybase 数据库专门写一个程序，为访问~Oracle 数据库又专门写一个程序，或为访问~Informix 数据库又编写另一个程序等等，程序员只需用~JDBC~API  写一个程序就够了，它可向相应数据库发送~SQL 调用。同时，将~Java 语言和~JDBC 结合起来使程序员不必为不同的平台编写不同的应用程序，只须写一遍程序就可以让它在任何平台上运行，这也是~Java 语言“编写一次，处处运行”的优势。
\subsection{~JDBC~API }
\par ~JDBC~API 主要位于~JDK中的~java.sql 包中（之后扩展的内容位于~javax.sql 包中），主要包括（斜体代表接口，需要驱动程序提供者来具体实现）：
\begin{itemize}
  \item ~DriverManager ：负责加载各种不同的驱动程序（~Driver），并根据不同的请求，向调用者返回相应的数据连接（~Connection ）。
  \item \x{Driver}：驱动程序，会将自身加载到~DriverManager 中去，并处理相应的请求并返回相应的数据库连接（~Connection ）。
  \item \x{Connection}：数据库连接，负责与进行数据库间通讯，~SQL 执行以及事务处理都是在某个特定~Connection 环境中进行的。可以产生用以执行~SQL的Statement 。
  \item \x{Statement}：用以执行~SQL 查询和更新（针对静态~SQL 语句和单次执行）。
  \item \x{PreparedStatement}：用以执行包含动态参数的~SQL 查询和更新（在服务器端编译，允许重复执行以提高效率）。
  \item \x{CallableStatement}：用以调用数据库中的存储过程。
  \item SQL~Exception：代表在数据库连接的创建和关闭和SQL语句的执行过程中发生了例外情况（即错误）。
\end{itemize}
\section{\x{Apache~Commons~DbUtils}}
\section{\x{Apache~DBCP}} 


\chapter{\LaTeX}           % chapter 2
\section{Introduction}     % section 2.1
\subsection{Usage}         % subsection 2.1.1

\begin{thebibliography}{9}
  % type bibliography here
\end{thebibliography}

\end{document} 